export interface FormV0 {
  quYuValue: string
  gongXuId: string
  gongZhongID: string
  tsIdSelect: ShiftSchedulePickerData
  personDocumentList: string[]
}

export const columns: {
  [key: string]: {
    [key in 'staff' | 'equipment']: {
      statisticsColumns: BasicGridColumnProps[]
      statisticsByMaterialColumns: BasicGridColumnProps[]
      detailColumns: BasicGridColumnProps[]
    }
  }
} = {
  细纱: {
    staff: {
      statisticsColumns: [
        {
          title: '人员',
          field: 'personName',
          minWidth: 100
        },
        {
          title: '看台数',
          field: 'scanCnt',
          minWidth: 100
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg',
          minWidth: 100
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext',
          minWidth: 100
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg',
          minWidth: 100
        },
        {
          title: '落纱次数',
          field: 'doffingCnt',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime',
          minWidth: 100
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength',
          minWidth: 100
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg'
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext'
        },
        {
          title: '落纱次数',
          field: 'doffingCnt'
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg'
        },
        {
          title: '品种停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '台平均停台时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '实际产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr',
          minWidth: 100
        },
        {
          title: '班次产量(kg)',
          field: 'actualYarnWeight_hj',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength_hj',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime_hj',
          minWidth: 100
        },
        {
          title: '平均停台时间(分钟)',
          field: 'stopTimeAvg',
          minWidth: 100
        },
        {
          title: '人员',
          field: 'personName',
          minWidth: 100
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt',
          minWidth: 80
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg',
          minWidth: 100
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext',
          minWidth: 100
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun',
          minWidth: 80
        },
        {
          title: '落纱次数',
          field: 'doffingCnt',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength',
          minWidth: 100
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight',
          minWidth: 100
        }
      ]
    },
    equipment: {
      statisticsColumns: [
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg'
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext'
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg'
        },
        {
          title: '落纱次数',
          field: 'doffingCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg'
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext'
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg'
        },
        {
          title: '落纱次数',
          field: 'doffingCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '实际产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '日期',
          field: 'dateTimeStr'
        },
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '平均巡回接头时间(分钟)',
          field: 'jointTimeAvg'
        },
        {
          title: '平均交班断头',
          field: 'breakCntToNext'
        },
        {
          title: '平均落纱时间(分钟)',
          field: 'doffingTimeAvg'
        },
        {
          title: '落纱次数',
          field: 'doffingCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ]
    }
  },
  络筒: {
    staff: {
      statisticsColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '品种停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '台平均停台时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr',
          minWidth: 100
        },
        {
          title: '班次产量(kg)',
          field: 'actualYarnWeight_hj',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength_hj',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime_hj',
          minWidth: 100
        },
        {
          title: '平均停台时间(分钟)',
          field: 'stopTimeAvg',
          minWidth: 100
        },
        {
          title: '人员',
          field: 'personName',
          minWidth: 100
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun',
          minWidth: 100
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight',
          minWidth: 100
        }
      ]
    },
    equipment: {
      statisticsColumns: [
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr'
        },
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ]
    }
  },
  末并: {
    staff: {
      statisticsColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '品种停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '台平均停台时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr',
          minWidth: 100
        },
        {
          title: '班次产量(kg)',
          field: 'actualYarnWeight_hj',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength_hj',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime_hj',
          minWidth: 100
        },
        {
          title: '平均停台时间(分钟)',
          field: 'stopTimeAvg',
          minWidth: 100
        },
        {
          title: '人员',
          field: 'personName',
          minWidth: 100
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime',
          minWidth: 100
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength',
          minWidth: 100
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight',
          minWidth: 100
        }
      ]
    },
    equipment: {
      statisticsColumns: [
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr'
        },
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: 'TP超标次数',
          field: 'warningCnt',
          minWidth: 100
        },
        {
          title: 'TP超标总时长(分钟)',
          field: 'durationTotal',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ]
    }
  },
  default: {
    staff: {
      statisticsColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt'
        },
        {
          title: '品种停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '台平均停台时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr',
          minWidth: 100
        },
        {
          title: '班次产量(kg)',
          field: 'actualYarnWeight_hj',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength_hj',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime_hj',
          minWidth: 100
        },
        {
          title: '平均停台时间(分钟)',
          field: 'stopTimeAvg',
          minWidth: 100
        },
        {
          title: '人员',
          field: 'personName',
          minWidth: 100
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '看台数',
          field: 'scanCnt',
          minWidth: 100
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime',
          minWidth: 100
        },
        {
          title: '效率(%)',
          field: 'efcRun',
          minWidth: 100
        },
        {
          title: '产量(m)',
          field: 'yarnLength',
          minWidth: 100
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight',
          minWidth: 100
        }
      ]
    },
    equipment: {
      statisticsColumns: [
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      statisticsByMaterialColumns: [
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ],
      detailColumns: [
        {
          title: '班次',
          field: 'dateTimeStr'
        },
        {
          title: '机台号',
          field: 'machineName'
        },
        {
          title: '品种',
          field: 'materialName',
          minWidth: 200
        },
        {
          title: '人员',
          field: 'personName'
        },
        {
          title: '停台时间(分钟)',
          field: 'stopTime'
        },
        {
          title: '平均停车时间(分钟)',
          field: 'stopTimeAvg'
        },
        {
          title: '效率(%)',
          field: 'efcRun'
        },
        {
          title: '产量(m)',
          field: 'yarnLength'
        },
        {
          title: '产量(kg)',
          field: 'actualYarnWeight'
        }
      ]
    }
  }
}

// 取出所有求和字段 第一个表所有字段都求和
function getAllStatisticsField(_columns: typeof columns): string[] {
  const fieldSet = new Set<string>()
  Object.values(_columns).forEach((section) => {
    Object.values(section).forEach((type) => {
      const statsColumns = type.statisticsColumns || []
      statsColumns.forEach((column) => {
        if (column.field) {
          fieldSet.add(column.field)
        }
      })
    })
  })
  return Array.from(fieldSet)
}

export const sumFields = getAllStatisticsField(columns)
